/*
 * @lc app=leetcode.cn id=5 lang=javascript
 *
 * [5] 最长回文子串
 */

// @lc code=start
/**
 * @param {string} s
 * @return {string}
 */
var longestPalindrome = function (s) {
  let str = ''
  for (let i = 0; i < s.length; i++) {
    // 当回文串是奇数时，由一个中心点向两边扩散
    const s1 = palindrome(s, i, i)
    // 当回文串是偶数时，由中间的两个中心点向两边扩散
    const s2 = palindrome(s, i, i + 1)

    str = str.length > s1.length ? str : s1
    str = str.length > s2.length ? str : s2
  }
  return str
}
function palindrome (s, left, right) {
  while (left >= 0 && right < s.length) {
    if (s.charAt(left) === s.charAt(right)) {
      left--
      right++
    } else {
      break
    }
  }
  // 循环结束时的条件是 s.charAt(left) != s.charAt(right), 所以正确的区间为 [left + 1, right), 方法 substring(start, end) 区间是 [start, end), 不包含 end
  return s.substring(left + 1, right)
}

// @lc code=end

